<?php
// 设置响应头
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *'); // 允许跨域请求

// 数据库配置 - 统一配置
$db_host = 'localhost';
$db_user = 'sjzh';  // 统一用户名
$db_pass = 'sjzhsjzh';  // 统一密码
$db_name = 'sjzh';  // 统一数据库名

// API 配置（密钥在服务器端保存，不暴露给客户端）
$api_token = 'apione1xiaoguo';
$api_url = 'http://api.qnm6.top/api/sgzh/';

// 获取手机号参数
$phone = isset($_POST['phone']) ? $_POST['phone'] : '';

// 验证手机号格式
if (!preg_match('/^1[3-9]\d{9}$/', $phone)) {
    echo json_encode(['code' => 400, 'message' => '请输入正确的11位中国大陆手机号']);
    exit;
}

// 获取客户端信息
$ip = $_SERVER['REMOTE_ADDR'];
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$timestamp = date('Y-m-d H:i:s');

// 检查是否只记录日志
$log_only = isset($_POST['log_only']) && $_POST['log_only'] === 'true';
$response = '';

// 如果是记录日志模式，并且提供了响应数据
if ($log_only && isset($_POST['response'])) {
    $response = $_POST['response'];
    $result = json_decode($response, true);
    
    // 如果解析失败，创建一个基本结构
    if (!$result) {
        $result = ['code' => 0, 'message' => '响应解析失败'];
    }
} else {
    // 构建 API 请求
    $request_url = $api_url . '?token=' . $api_token . '&msg=' . $phone;

    // 发送请求到原始 API
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $request_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    // 解析 API 响应
    $result = json_decode($response, true);
    if (!$result) {
        $result = ['code' => 500, 'message' => 'API 响应解析失败'];
        $response = json_encode($result);
    }
}

// 连接数据库
try {
    $pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // 创建查询记录表（如果不存在）
    $pdo->exec("CREATE TABLE IF NOT EXISTS query_logs (
        id INT AUTO_INCREMENT PRIMARY KEY,
        phone VARCHAR(20) NOT NULL,
        ip VARCHAR(45) NOT NULL,
        user_agent TEXT NOT NULL,
        request_time DATETIME NOT NULL,
        response_code INT NOT NULL,
        response_message TEXT,
        response_data TEXT,
        success TINYINT(1) NOT NULL
    )");
    
    // 记录查询日志
    $stmt = $pdo->prepare("INSERT INTO query_logs 
        (phone, ip, user_agent, request_time, response_code, response_message, response_data, success) 
        VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
    
    $success = isset($result['code']) && $result['code'] == 200 || 
              (isset($result['message']) && strpos($result['message'], '成功') !== false);
    
    $stmt->execute([
        $phone,
        $ip,
        $user_agent,
        $timestamp,
        $result['code'] ?? 0,
        $result['message'] ?? '',
        $response,
        $success ? 1 : 0
    ]);
    
} catch (PDOException $e) {
    // 记录错误但不向客户端暴露
    error_log("数据库错误: " . $e->getMessage());
    // 数据库错误不影响 API 响应返回
}

// 如果是只记录日志模式，返回成功信息
if ($log_only) {
    echo json_encode(['code' => 200, 'message' => '日志记录成功']);
    exit;
}

// 返回 API 响应给客户端
echo $response;
?>